<?php
/*
  $conf
  prefix  - string
  postfix - string
  folder  - string
  text    - string
  name    - string
  limit   - numeric
  id      - numeric
*/

class File
{
	/*static public function getSize($file) {
		$size = filesize($file);
		return '<small>Объем: '.round(($size / 1024), 2).' Kb</small>';
	}*/
	static public function getSize($file) {
		/* проверяем существует ли файл */
		if(!file_exists($file)) {
			return "Файл  отсутствует.";
		}
		/* определяем размер файла */
		$filesize = filesize($file);
		/* Если размер переданного в функцию файла больше 1кб */
		if($filesize > 1024)
		{
			$filesize = ($filesize/1024);
			/* если размер файла больше одного килобайта
			   пересчитываем в мегабайтах */
			if($filesize > 1024)
			{
				$filesize = ($filesize/1024);
				/* если размер файла больше одного мегабайта
				   пересчитываем в гигабайтах */
				if($filesize > 1024)
				{
					$filesize = ($filesize/1024);
					$filesize = round($filesize, 1);
					return $filesize." ГБ";
				}
				else
				{
					$filesize = round($filesize, 1);
					return $filesize." MБ";
				}
			}
			else
			{
				$filesize = round($filesize, 1);
				return $filesize." КБ";
			}
		}
		else
		{
			$filesize = round($filesize, 1);
			return $filesize." байт";
		}
	}
	
	static public function getFileExtInfo($ext = false)
	{		
		$arrayExtInfo = array(
			'jpg'  => 'Изображение JPEG',
			'jpeg' => 'Изображение JPEG',
			'gif'  => 'Изображение GIF',
			'png'  => 'Изображение PNG',
			'html' => 'Веб страница',
			'htm'  => 'Веб страница',
			'pdf'  => 'Adobe Acrobat PDF',
			'doc'  => 'Документ MS Word',
			'docx' => 'Документ Word 2007',
			'rtf'  => 'Форматированный текст',
			'txt'  => 'Простой текст',
			'xl'   => 'Таблица MS Excel',
			'xls'  => 'Таблица MS Excel',
			'xlsx' => 'Таблица Excel 2007',
			'ppt'  => 'Презентация PowerPoint',
			'pptx' => 'Презентация PowerPoint 2007',
			'pps'  => 'Слайд шоу PowerPoint',
			'zip'  => 'ZIP Архив', 
			'rar'  => 'RAR Архив',
			'tar'  => 'TAR Архив',
			'swf'  => 'Flash Movie',
			'wmv'  => 'Windows Media',
			'rm'   => 'Real Media',
			'mov'  => 'QuickTime',
			'avi'  => 'AVI Video',
			'mpg'  => 'MPEG Video',
			'mpeg' => 'MPEG Video'			 
		);
		if($ext) {
			return $arrayExtInfo[$ext];
		}
		else {
			return $arrayExtInfo;
		}
	}
	static public function getIcon($ext, $extinfo) {
		if(file_exists(ROOT_DIR.'/templates/admin/img/ext_file_icons/'.$ext.'.gif'))	{
			return '<img src="/templates/admin/img/ext_file_icons/'.$ext.'.gif" alt="'.$extinfo.'" title="'.$extinfo.'" /> ';			
		} else {
			return '<img src="/templates/admin/img/ext_file_icons/unknown.gif" alt="unknown type file" /> ';
		}
	}
	/* Для вывода на сайте */
	static public function getFiles($conf = array()) {
		$j = 0;
		for($i = 1;$i <= $conf['limit'];$i++)
		{
			foreach(File::getFileExtInfo() as $Ext => $ExtInfo)	{
				$FileCheck = 'uploads/'.$conf['folder'].'/'.md5($conf['id'].'_'.$i.'_').$conf['postfix'].".".$Ext;
				if(file_exists(str_replace('//', '/', ROOT_DIR."/".$FileCheck))) {
					$j++;					
					$file_code_arr[$j]["icon"] = File::getIcon($Ext, $ExtInfo);
					$file_code_arr[$j]["name"] = urlencode($conf['name']);
					$file_code_arr[$j]["ext_info"] = $ExtInfo;
					$file_code_arr[$j]["path"] = $FileCheck;					
					$file_code_arr[$j]["size"] = File::getSize(ROOT_DIR."/".$FileCheck);
				}
			}						
		}
		return $file_code_arr;
	}
	/* Для вывода в админке */	
	static public function getCode($conf = array())
	{		
		$j=0;
		for($i=1;$i<=$conf['limit'];$i++) {
			foreach(File::getFileExtInfo() as $Ext => $ExtInfo)	{
				$FileCheck = 'uploads/'.$conf['folder'].'/'.md5($conf['id'].'_'.$i.'_').$conf['postfix'].".".$Ext;
				if(file_exists(str_replace('//', '/', ROOT_DIR."/".$FileCheck))) {
					$j++;					
					$file_code_arr[] = '<p id="original_'.$conf['prefix'].'resp_uploads'.$i.'">'.File::getIcon($Ext, $ExtInfo).'<a href="/download.php?file='.$FileCheck.'&name='.urlencode($conf['name']).'" title="Загрузить"><strong>[# '.$j.'] '.$ExtInfo.' '.File::getSize(ROOT_DIR."/".$FileCheck).'</strong></a> &nbsp; '
									  .'<a title="Удалить файл" href="javascript:void(0);" class="deleteFile" rel="'.$FileCheck.'"><img src="/templates/admin/img/cancel.png" border="0" /></a></p>';
				}
			}						
		}	
		$new_ajax_conf = array(
			'folder' => $conf['folder'],
			'limit' => $conf['limit'],
			'id' => $conf['id'],
			'postfix' => $conf['postfix']
		);	
		return '<script src="/min/index.php?f=/templates/admin/js/uploadify/jquery.uploadify.v2.1.4.min.js,/templates/admin/js/uploadify/swfobject.js" type="text/javascript"></script>
		<div class="image_box">
		   <h1>'.$conf['text'].'</h1>
		   '.($file_code_arr ? implode("<hr />", $file_code_arr) : '').'
		   <p id="'.$conf['prefix'].'ajax_uploads'.$conf['id'].'"></p>
		   <input id="'.$conf['prefix'].'fileInput'.$conf['id'].'" name="'.$conf['prefix'].'fileInput'.$conf['id'].'" type="file" />
		 </div>
		 <script type="text/javascript">						 
		 $(function()
		 {							 
			 $("#'.$conf['prefix'].'fileInput'.$conf['id'].'").uploadify({
				 "uploader"   : "/templates/admin/js/uploadify/uploadify.swf",
				 "script"     : "/ajax/admin/upload.file.backend.php",
				 "cancelImg"  : "/templates/admin/img/cancel.png",								
				 "scriptData" : {
					 "metadata" : \''.base64_encode(serialize($new_ajax_conf)).'\'
				},
				"folder"     : "/uploads/'.$conf['folder'].'",
				"multi"      : true,
				"auto"       : true,
				"queueSizeLimit" : '.$conf['limit'].',
				"simUploadLimit" : '.$conf['limit'].',
				"fileDesc"   : "*.*",
				"fileExt"    : "*.*;",
				"onComplete" : function(event, queueID, fileObj, response, data) {
					$("#'.$conf['prefix'].'ajax_uploads'.$conf['id'].'").html(response);
				},				
				"onOpen" : function(event,ID,fileObj) {
					$("#'.$conf['prefix'].'ajax_uploads'.$conf['id'].'").html("Загружаю <strong>"+fileObj.name+"</strong>! Подождите немного!");
				},
				"onProgress" : function(event, ID, fileObj, data) {
					var bytes = Math.round(data.bytesLoaded / 1024);
					$("#"+$(event.target).attr("id")+ID).find(".percentage").text(" - " + bytes + "KB Загружено");
					return false;
				},
				"onQueueFull" : function (event, queueSizeLimit) {
					alert("Возможное количество загружаемых файлов: "+queueSizeLimit+"!");
					return false;
				},
				"onError"     : function (event,ID,fileObj,errorObj) {
					$("#unloading_ajax").html(errorObj.type + " Error: " + errorObj.info);
					return false;
				}
			});
		});
		</script>';
	}
} 

?>